from django.contrib import admin
from models import Cliente, Fornecedor, Produto, Venda, ProdutoVendido, FecharVenda, ParcelasVenda, ParcelasCompra, FecharCompra
from django.shortcuts import get_list_or_404
from forms import *

class FornecedorModelOptions(admin.ModelAdmin):

    fieldsets = [
    ('Fornecedor',        {'fields': ['foto', 'nome', 'ativo', 'endereco', 'descricao']}),
    ]

    list_display = ('nome', 'ativo', 'endereco', 'valor_devedor')

    search_fields = ['nome']

    list_per_page = 30


class ClienteModelOptions(admin.ModelAdmin):

    fieldsets = [
    ('Cliente',        {'fields': ['foto', 'nome', 'ativo', 'endereco', 'descricao']}),
    ]

    list_display = ('nome', 'ativo', 'endereco', 'valor_devedor')

    search_fields = ['nome']

    list_per_page = 30


class ProdutoModelOptions(admin.ModelAdmin):

    fieldsets = [
    ('Produto',        {'fields': ['foto', 'codigo', 'nome', 'marca', 'fornecedor', 'valor_compra', 'valor_venda', 'quantidade', 'quantidade_disponivel', 'data_de_compra', 'descricao']}),
    ]

    list_display = ('codigo', 'nome', 'marca', 'fornecedor', 'ativo', 'pago', 'valor_compra', 'valor_venda', 'quantidade_disponivel', 'data_de_compra')

    search_fields = ['nome', 'codigo', 'ativo', 'marca', 'fornecedor']

    list_filter = ['data_de_compra', 'marca']

    list_per_page = 30

    def save_model(self, request, obj, form, change):
        if(obj.quantidade <= 0):
            obj.ativo = False
        else:
            obj.ativo = True
        obj.save()
        obj.fornecedor.salva_valor()


class ProdutoInline(admin.TabularInline):

    form = ProdutoVendidoForm
    model = ProdutoVendido
    extra = 1

    fieldsets = [
    ('Produtos',        {'fields': ['produto', 'quantidade', 'valor']}),
    ]

class VendaModelOptions(admin.ModelAdmin):

    form = VendaForm

    class Media:
        js = (
            "js/jquery-1.4.1.min.js",
            "js/script.js",
        )
        
    fieldsets = [
    ('Venda',        {'fields': ['cliente', 'data_da_venda']}),
    ('',        {'fields': ['valor_total']})
    ]
    

    list_display = ('cliente', 'pago', 'valor_total', 'numero_de_pecas', 'data_da_venda')

    list_filter = ['data_da_venda']

    inlines = [ProdutoInline]
    
    list_per_page = 30

    def save_model(self, request, obj, form, change):
        obj.save()
        obj.cliente.salva_valor()
        

    def numero_de_pecas(self, obj):
        try:
            ProdutoVendido_list = get_list_or_404(ProdutoVendido, venda=obj)
            numero = 0
            for x in ProdutoVendido_list:
                numero = numero + x.quantidade
            return numero
        except:
            return 0


class ParcelasVendaInline(admin.TabularInline):
    model = ParcelasVenda
    extra = 1

    fieldsets = [
    ('Parcelas',        {'fields': ['valor', 'data_de_pagamento']}),
    ]

class FecharVendaModelOptions(admin.ModelAdmin):

    form = FecharVendaForm
    
    class Media:
        js = (
            "js/jquery-1.4.1.min.js",
            "js/script.js",
        )

    fieldsets = [
    ('Fechar Venda',        {'fields': ['cliente', 'forma_de_pagamento', 'valor_total']}),
    ]


    list_display = ('cliente', 'forma_de_pagamento', 'valor_total')

    list_filter = ['forma_de_pagamento']

    inlines = [ParcelasVendaInline]

    list_per_page = 30

    def save_model(self, request, obj, form, change):

        fecharvendas_list = get_list_or_404( Venda, cliente=obj.cliente )
        for vendas in fecharvendas_list:
            vendas.pago = True
            vendas.save()
        obj.save()
        obj.cliente.salva_valor()


class ParcelasCompraInline(admin.TabularInline):
    model = ParcelasCompra
    extra = 1

    fieldsets = [
    ('Parcelas',        {'fields': ['valor', 'data_de_pagamento']}),
    ]

class FecharCompraModelOptions(admin.ModelAdmin):

    form = FecharCompraForm

    class Media:
        js = (
            "js/jquery-1.4.1.min.js",
            "js/script.js",
        )

    fieldsets = [
    ('Fechar Compra',        {'fields': ['fornecedor', 'forma_de_pagamento', 'valor_total']}),
    ]


    list_display = ('fornecedor', 'forma_de_pagamento', 'valor_total')

    list_filter = ['forma_de_pagamento']

    inlines = [ParcelasCompraInline]

    list_per_page = 30

    def save_model(self, request, obj, form, change):

        fecharcompras_list = get_list_or_404( Produto, fornecedor=obj.fornecedor )
        for compras in fecharcompras_list:
            compras.pago = True
            compras.save()
        obj.save()
        obj.fornecedor.salva_valor()


admin.site.register(Cliente, ClienteModelOptions)
admin.site.register(Fornecedor, FornecedorModelOptions)
admin.site.register(Produto, ProdutoModelOptions)
admin.site.register(Venda, VendaModelOptions)
admin.site.register(FecharVenda, FecharVendaModelOptions)
admin.site.register(FecharCompra, FecharCompraModelOptions)